/**
 * 
 */
package engine;

import data.Data.TeamID;
import data.Player;
import data.Position;
import data.Team;
import engine.GameEngine.GameState;
import exception.BadPositionException;
import exception.IllegalPlacementException;

/**
 * 
 * @author Tomasz Dąbrowski
 * 
 */
public interface IGameEngine {

	public void placePlayer(final Player player, final Position pos) throws IllegalPlacementException, BadPositionException;

	public Team teamA();

	public Team teamB();

	public boolean isExiting();

	public GameState getGameState();

	public void onTouchBack(Player player);

	public boolean movePlayer(Player player, Position newPos);

	public Team currentTeam();

	public Pitch getPlayingField();

	public boolean checkForTouchDown(final Player player);

	public boolean processStandup(final Player player);

	public boolean resolveThrowBall(final Player thrower, final Position target);

	public boolean resolveBlock(final Player blocker, final Position target);

	public void endTurn();

	public boolean isGameEnd();

	public TeamID currentTeamID();
}
